// index.js
// 获取应用实例
const app = getApp()

Page({
  data: {
    userInfo: {},
    hasUserInfo: false,
    hasSessionKey: false,
    hasUserId: false,
    canIUseGetUserProfile: false,
    answerList: [] //保存用户解答过的问题的信息的数组
  },

  onShow() {
    
    //第一种情况，storage中有登录信息，在data中存储本地信息，并对后端进行请求
    var user_info_ = wx.getStorageSync('userInfo');
    var session_key_ = wx.getStorageSync('sessionKey');
    var user_id_ = wx.getStorageSync('userId');
    if (user_info_ != "" && session_key_ != "" && user_id_ != "") {
	  //每次经过这个页面都会更新一下自己的session_key
      this.getProof(user_info_.nickName,false);
	  
      //在data中存储本地信息
      this.setData({
        userInfo: user_info_,
        hasUserInfo: true,
        hasSessionKey: true,
        hasUserId: true,
      });

      var that = this;
      //后面是后端交互代码，获得别人的回答信息，建议先进行屏蔽，否则控制台会有错（不理它就完事了）
      wx.request({
        header: {"Content-Type":"application/x-www-form-urlencoded"},
        url: app.globalData.domain + "/getAnswersBrief",
        method: "GET",
        data: {
          session_key: session_key_,
          user_id: user_id_
        },
        success(res) {
          let state=res.data.responseCode;
          if(state==200){
            //对返回的回答问题数组进行处理
            var array=res.data.data;
            for(let i=0;i<array.length;i++){
              if(array[i].questionBrief.length>=10){
                array[i].questionBrief=array[i].questionBrief.substr(0,10)+"…";
              }
              if(array[i].contentBrief.length>=10){
                array[i].contentBrief=array[i].contentBrief.substr(0,10)+"…";
              }
              array[i].lastModifiedDate = app.timestamp2date(array[i].lastModifiedDate);
            }
            that.setData({
              answerList: array
            });
          }
          else{
            app.dealErrMes(state);
          }
          
        },
        fail(res){
          // console.log(res);
          wx.showToast({
            icon:"error",
            title: '网络繁忙！',
          })
        }
      })
    }
    else{
      this.setData({
        hasUserInfo: false,
        hasSessionKey: false,
        hasUserId: false,
      });
    }

    //第二种情况先看微信版本支不支持这样获取登录信息
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
  },

  // 后面的方法已经全屏蔽了
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        wx.setStorageSync("userInfo", res.userInfo);
        this.getProof(res.userInfo.nickName,true);
      }
    });
  },

  //有返回值，返回bool。只有从后台拿到数据，方法返回的状态才是成功
  //输入参数flag用于判断是什么状态，flag=true时代表调用函数是为了登录，flag=false时是为了更新自己的sessionkey
  //成功后，用户的session_key和user_id将保存在storage中，它们的key分别是sessionKey和userId
  getProof(user_name,flag) {
    //后端，两行用于写死，记得删除
    // wx.setStorageSync('sessionKey', "res.data.session_key");
    // wx.setStorageSync('userId', "user_id");

    var that=this;
    //后端，登录，已更改状态
    wx.login({
      success(res) {
        if (res.code) {
          //发起网络请求
          wx.request({
            header: {"Content-Type":"application/x-www-form-urlencoded"},
            url: app.globalData.domain + "/login",
            method: "POST",
            data: {
              code: res.code,
              name: user_name
            },
            //成功的话，将session_key和user_id放到storage中，并调用show函数初始化页面
            success(res) {
              let state=res.data.responseCode;
              // 如果是正常返回的话
              if(state==200){
                wx.setStorageSync('sessionKey', res.data.data['session-key']);
                wx.setStorageSync('userId', res.data.data.identify);
                //重新初始化页面，主要是为了触发onShow函数的第一种情况
                if(flag){
                  that.onShow();
                }
              }
              else{
                app.dealErrMes(state);
              }
            },
            fail(res){
              wx.showToast({
                icon:"error",
                title: '网络繁忙',
              });
            }
          })
        }
      }
    });
  }
})